﻿// 3448. 基本算术.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;
/*
https://www.acwing.com/problem/content/3451/

孩子们在学习多位数加法运算。

计算时，相同数位要对齐，从个位加起，哪一位上的数相加满十，就向上一位进一。

许多孩子表示，“进位”操作十分困难，是个不小的挑战。

现在，给定你一些多位数加法运算的问题，请你统计每个问题在计算过程中需要用到多少次“进位”操作。

输入格式
输入包含多组测试数据。

每组数据占一行，包含两个无符号整数。

当输入一行为 0 0 时，表示输入结束。

输出格式
每组数据输出一个结果，用来描述进位的次数。

具体形式参考样例。

数据范围
每个输入最多包含 100 组数据。
给定整数均小于 10 位。

输入样例：
123 456
555 555
123 594
0 0
输出样例：
No carry operation.
3 carry operations.
1 carry operation.
*/

string a, b;

int main()
{
	while (cin >> a >> b) {
		if (a == "0" && b == "0") { break; }
		int ans = 0; int carry = 0;
		if (a.size() > b.size()) swap(a, b);
		int i = 0;  
		reverse(a.begin(), a.end()); reverse(b.begin(), b.end());
		for (i = 0; i < a.size(); i++) {
			int va = a[i] - '0';
			int vb = b[i] - '0';
			int sum = carry + va + vb;
			carry = sum / 10;
			if (carry == 1) ans++;
		}
		while (i < b.size()) {
			int vb = b[i] - '0';
			int sum = carry  + vb;
			carry = sum / 10;
			if (carry == 1) ans++;
			i++;
		}

		if (ans == 0) {
			cout << "No carry operation." << endl;
		}
		else if (ans == 1) {
			cout << "1 carry operation." << endl;
		}
		else {
			cout << ans << " carry operations." << endl;
		}
	}


}

 